package Lambda;

import java.util.ArrayList;

import static Lambda.Student.printStudents;

/**
 * 编程题目二
 * 训练目标3：掌握自定义对象排序+lambda
 * 定义一个Student实体类：姓名，年纪，性别，身高，成绩
 * 定义测试类：创建学生数组，存储5个学生信息
 * 对学生数组中学生进行排序：按照年纪升序，如果年纪一致，按照成绩降序
 * Student[] students = {
 * new Student("张三"，20,'男'，175.5,88.5)，
 * new Student("李四",19，'女'，163.2，92.0)，
 * new Student("王五"，21,'男'，180.0,85.5)，
 * new Student("赵六"，20，'女'，168.8,90.5),
 * new Student("钱七"，21'男'，172.3，100.0)▏
 */
public class Test {
    public static void main(String[] args) {
        // 1.Lambda 表达式
        // 2.方法参考
        // 3.匿名类
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student("张三",20,"男",175.5,88.5));
        list.add(new Student("李四",19,"女",163.2,92.0));
        list.add(new Student("王五",21,"男",180.0,85.5));
        list.add(new Student("赵六",20,"女",168.8,90.5));
        list.add(new Student("钱七",21,"男",172.3,100.0));
        list.sort( (o1, o2) -> {
            if(o1.getAge()==o2.getAge()) {
                return Double.compare(o2.getScore() , o1.getScore());
            }else{
                return o1.getAge() - o2.getAge();
            }
        });

        //TODO 优化ToString打印输出
        printStudents(list);
    }
}
